<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/seccomp.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/seccomp.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1NFQ0NPTVBfSF8w"><span class="b">_LINUX_SECCOMP_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1NFQ0NPTVBfSF8w"><span class="b">_LINUX_SECCOMP_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">uapi</span><span class="f">/</span><span class="b">linux</span><span class="f">/</span><span class="b">seccomp</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> 
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NFQ0NPTVBfMA__"><span class="b">CONFIG_SECCOMP</span></a>
<a name="7" /><span class="True">       7:</span> 
<a name="8" /><span class="True">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">thread_info</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="True">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">seccomp</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="m">struct</span> <span class="b">seccomp_filter</span><span class="f">;</span>
<a name="12" /><span class="True">      12:</span> <span class="k">/**</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> * struct seccomp - the state of a seccomp&apos;ed process</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> *</span>
<a name="15" /><span class="True">      15:</span> <span class="k"> * @mode:  indicates one of the valid values above for controlled</span>
<a name="16" /><span class="True">      16:</span> <span class="k"> *         system calls available to a process.</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> * @filter: The metadata and ruleset for determining what system calls</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> *          are allowed for a task.</span>
<a name="19" /><span class="True">      19:</span> <span class="k"> *</span>
<a name="20" /><span class="True">      20:</span> <span class="k"> *          @filter must only be accessed from the context of current as there</span>
<a name="21" /><span class="True">      21:</span> <span class="k"> *          is no locking.</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="True">      23:</span> <span class="m">struct</span> <span class="b">seccomp</span> <span class="f">{</span>
<a name="24" /><span class="True">      24:</span>     <span class="m">int</span> <span class="b">mode</span><span class="f">;</span>
<a name="25" /><span class="True">      25:</span>     <span class="m">struct</span> <span class="b">seccomp_filter</span> <span class="f">*</span><span class="b">filter</span><span class="f">;</span>
<a name="26" /><span class="True">      26:</span> <span class="f">}</span><span class="f">;</span>
<a name="27" /><span class="True">      27:</span> 
<a name="28" /><span class="True">      28:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__secure_computing</span><span class="f">(</span><span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="29" /><span class="True">      29:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">secure_computing</span><span class="f">(</span><span class="m">int</span> <span class="b">this_syscall</span><span class="f">)</span>
<a name="30" /><span class="True">      30:</span> <span class="f">{</span>
<a name="31" /><span class="True">      31:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_dGVzdF90aHJlYWRfZmxhZ18w"><span class="b">test_thread_flag</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_VElGX1NFQ0NPTVBfMA__"><span class="b">TIF_SECCOMP</span></a><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="32" /><span class="True">      32:</span>         <span class="m">return</span>  <span class="b">__secure_computing</span><span class="f">(</span><span class="b">this_syscall</span><span class="f">)</span><span class="f">;</span>
<a name="33" /><span class="True">      33:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="34" /><span class="True">      34:</span> <span class="f">}</span>
<a name="35" /><span class="True">      35:</span> 
<a name="36" /><span class="True">      36:</span> <span class="k">/* A wrapper for architectures supporting only SECCOMP_MODE_STRICT. */</span>
<a name="37" /><span class="True">      37:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">secure_computing_strict</span><span class="f">(</span><span class="m">int</span> <span class="b">this_syscall</span><span class="f">)</span>
<a name="38" /><span class="True">      38:</span> <span class="f">{</span>
<a name="39" /><span class="True">      39:</span>     <a href="cpu.c_macros_ref.html#_QlVHX09OXzA_"><span class="b">BUG_ON</span></a><span class="f">(</span><span class="b">secure_computing</span><span class="f">(</span><span class="b">this_syscall</span><span class="f">)</span> <span class="f">!=</span> <span class="c">0</span><span class="f">)</span><span class="f">;</span>
<a name="40" /><span class="True">      40:</span> <span class="f">}</span>
<a name="41" /><span class="True">      41:</span> 
<a name="42" /><span class="True">      42:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">prctl_get_seccomp</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="43" /><span class="True">      43:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">prctl_set_seccomp</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="44" /><span class="True">      44:</span> 
<a name="45" /><span class="True">      45:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">seccomp_mode</span><span class="f">(</span><span class="m">struct</span> <span class="b">seccomp</span> <span class="f">*</span><span class="b">s</span><span class="f">)</span>
<a name="46" /><span class="True">      46:</span> <span class="f">{</span>
<a name="47" /><span class="True">      47:</span>     <span class="m">return</span> <span class="b">s</span><span class="f">-&gt;</span><span class="b">mode</span><span class="f">;</span>
<a name="48" /><span class="True">      48:</span> <span class="f">}</span>
<a name="49" /><span class="True">      49:</span> 
<a name="50" /><span class="False">      50:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* CONFIG_SECCOMP */</span>
<a name="51" /><span class="False">      51:</span> 
<a name="52" /><span class="False">      52:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">errno</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="53" /><span class="False">      53:</span> 
<a name="54" /><span class="False">      54:</span> <span class="m">struct</span> <span class="b">seccomp</span> <span class="f">{</span> <span class="f">}</span><span class="f">;</span>
<a name="55" /><span class="False">      55:</span> <span class="m">struct</span> <span class="b">seccomp_filter</span> <span class="f">{</span> <span class="f">}</span><span class="f">;</span>
<a name="56" /><span class="False">      56:</span> 
<a name="57" /><span class="False">      57:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">secure_computing</span><span class="f">(</span><span class="m">int</span> <span class="b">this_syscall</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span>
<a name="58" /><span class="False">      58:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">secure_computing_strict</span><span class="f">(</span><span class="m">int</span> <span class="b">this_syscall</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span><span class="f">;</span> <span class="f">}</span>
<a name="59" /><span class="False">      59:</span> 
<a name="60" /><span class="False">      60:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">prctl_get_seccomp</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="61" /><span class="False">      61:</span> <span class="f">{</span>
<a name="62" /><span class="False">      62:</span>     <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RUlOVkFMXzA_"><span class="b">EINVAL</span></a><span class="f">;</span>
<a name="63" /><span class="False">      63:</span> <span class="f">}</span>
<a name="64" /><span class="False">      64:</span> 
<a name="65" /><span class="False">      65:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">prctl_set_seccomp</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">arg2</span><span class="f">,</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">arg3</span><span class="f">)</span>
<a name="66" /><span class="False">      66:</span> <span class="f">{</span>
<a name="67" /><span class="False">      67:</span>     <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RUlOVkFMXzA_"><span class="b">EINVAL</span></a><span class="f">;</span>
<a name="68" /><span class="False">      68:</span> <span class="f">}</span>
<a name="69" /><span class="False">      69:</span> 
<a name="70" /><span class="False">      70:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">seccomp_mode</span><span class="f">(</span><span class="m">struct</span> <span class="b">seccomp</span> <span class="f">*</span><span class="b">s</span><span class="f">)</span>
<a name="71" /><span class="False">      71:</span> <span class="f">{</span>
<a name="72" /><span class="False">      72:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="73" /><span class="False">      73:</span> <span class="f">}</span>
<a name="74" /><span class="True">      74:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_SECCOMP */</span>
<a name="75" /><span class="True">      75:</span> 
<a name="76" /><span class="True">      76:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NFQ0NPTVBfRklMVEVSXzA_"><span class="b">CONFIG_SECCOMP_FILTER</span></a>
<a name="77" /><span class="True">      77:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">put_seccomp_filter</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">tsk</span><span class="f">)</span><span class="f">;</span>
<a name="78" /><span class="True">      78:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">get_seccomp_filter</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">tsk</span><span class="f">)</span><span class="f">;</span>
<a name="79" /><span class="True">      79:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="b">seccomp_bpf_load</span><span class="f">(</span><span class="m">int</span> <span class="b">off</span><span class="f">)</span><span class="f">;</span>
<a name="80" /><span class="False">      80:</span> <span class="f">#</span><span class="n">else</span>  <span class="k">/* CONFIG_SECCOMP_FILTER */</span>
<a name="81" /><span class="False">      81:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">put_seccomp_filter</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">tsk</span><span class="f">)</span>
<a name="82" /><span class="False">      82:</span> <span class="f">{</span>
<a name="83" /><span class="False">      83:</span>     <span class="m">return</span><span class="f">;</span>
<a name="84" /><span class="False">      84:</span> <span class="f">}</span>
<a name="85" /><span class="False">      85:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">get_seccomp_filter</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">tsk</span><span class="f">)</span>
<a name="86" /><span class="False">      86:</span> <span class="f">{</span>
<a name="87" /><span class="False">      87:</span>     <span class="m">return</span><span class="f">;</span>
<a name="88" /><span class="False">      88:</span> <span class="f">}</span>
<a name="89" /><span class="True">      89:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_SECCOMP_FILTER */</span>
<a name="90" /><span class="True">      90:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_SECCOMP_H */</span>
<a name="91" /><span class="True">      91:</span> </pre>
  </body>
</html>
